/**
 * @Author: zxc
 * @Date: 2020-10-30 13:33:46
 * @func:两数之和
 */

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
// var twoSum = function(nums, target) {
//   const len = nums.length
//   let i=0,res = []
//   for(;i<len-1;i++){
//       let j = i+1;
//       for(;j<len;j++){
//           if(nums[i] + nums[j] == target){
//               res = [i,j]
//               break;
//           }
//       }
//       if(res.length) break
//   }
//   return res
// };

// /**
//  * @param {number[]} nums
//  * @param {number} target
//  * @return {number[]}
//  */
// var twoSum = function(nums, target) {
//   const temp = [],len = nums.length
//   let i = 0
//   while(i<len){
//       let num = target -nums[i]
//       if(temp[num] != undefined){
//           return[temp[num],i]
//       }
//       temp[nums[i]] = i
//       i++
//   }
// };

// /**
//  * @param {number[]} nums
//  * @param {number} target
//  * @return {number[]}
//  */
// var twoSum = function(nums, target) {
//   const temp = [],len = nums.length
//   let i = 0
//   while(i<len){
//       let num = target -nums[i]
//       if(temp[nums[i]] != undefined){
//           return[temp[nums[i]],i]
//       }
//       temp[num] = i
//       i++
//   }
// };

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function (nums, target) {
  const map = new Map(),
    len = nums.length
  let i = 0
  while (i < len) {
    if (map.has(nums[i])) {
      return [map.get(nums[i]), i]
    } else {
      map.set(target - nums[i], i)
    }
    i++
  }
}
